#!/usr/bin/env bash
#auth 582895699@qq.com
#data 2022年1月24日

# 资源下载地址
TAR_FILE='https://repo.huaweicloud.com/redis/redis-5.0.0.tar.gz'
# 安装目录
TAR_SOURCE_DIR='/tmp/redis_cluster'
# redis文件名称
NEW_DIR_NAME='redis'
# redis节点端口
PORTS=(7000 7001 7002 7003 7004 7005)
# redis子子节点文件件前缀
DIR_PREFIX='redis_'
# 外网IP
IP="124.70.64.128"

downloadFileAndCompile() {
  # 下载文件
  cd $TAR_SOURCE_DIR && wget $TAR_FILE
  echo 'download success!'
  # 解压文件
  tar -zxvf redis-5.0.0.tar.gz
  # 文件重命名
  mv redis-5.0.0 $NEW_DIR_NAME
  # 编译
  cd ./$NEW_DIR_NAME && make
}

configRedis() {
  for i in ${PORTS[*]}; do
    mkdir -p "$TAR_SOURCE_DIR/$DIR_PREFIX$i"/conf &&
      mkdir -p "$TAR_SOURCE_DIR/$DIR_PREFIX$i"/data &&
      port=${i} ip=${IP} dataPath="$TAR_SOURCE_DIR/$DIR_PREFIX$i/data" envsubst <"$TAR_SOURCE_DIR/config.conf" >"$TAR_SOURCE_DIR/$DIR_PREFIX$i/conf"/redis.conf &&
      "$TAR_SOURCE_DIR"/"$NEW_DIR_NAME"/src/redis-server "$TAR_SOURCE_DIR"/"redis_$i"/conf/redis.conf
  done
}

# 开放端口
openPort() {
  for port in ${PORTS[*]}; do
    firewall-cmd --add-port=$port/tcp --permanent
    firewall-cmd --add-port=1$port/tcp --permanent
  done
  firewall-cmd --reload &&
    firewall-cmd --list-ports
}

createCluster() {
  ./redis-cli --cluster create 124.70.64.128:7000 124.70.64.128:7001 124.70.64.128:7002 124.70.64.128:7003 124.70.64.128:7004 124.70.64.128:7005 -a 密码
}

run() {
  if [ ! -d $TAR_SOURCE_DIR ]; then
    echo '文件夹不存在'
    exit 1
  fi
  if [ ! -e "$TAR_SOURCE_DIR/config.conf" ]; then
    echo "基础配置文件不存在"
    exit 1
  fi
  downloadFileAndCompile
  configRedis
}

run
